// src/utils/deviceDetector.js

class DeviceDetector {
  constructor() {
    this.isMobile = this.checkIsMobile();
    this.callbacks = [];
    
    // 监听窗口大小变化
    window.addEventListener('resize', this.handleResize.bind(this));
  }
  
  /**
   * 检查是否为移动设备
   */
  checkIsMobile() {
    return window.innerWidth < 768;
  }
  
  /**
   * 处理窗口大小变化
   */
  handleResize() {
    const newIsMobile = this.checkIsMobile();
    
    // 如果设备状态发生变化，通知所有监听者
    if (newIsMobile !== this.isMobile) {
      this.isMobile = newIsMobile;
      this.notifyCallbacks();
    }
  }
  
  /**
   * 添加回调函数
   */
  addCallback(callback) {
    this.callbacks.push(callback);
  }
  
  /**
   * 移除回调函数
   */
  removeCallback(callback) {
    const index = this.callbacks.indexOf(callback);
    if (index > -1) {
      this.callbacks.splice(index, 1);
    }
  }
  
  /**
   * 通知所有回调函数
   */
  notifyCallbacks() {
    this.callbacks.forEach(callback => {
      if (typeof callback === 'function') {
        callback(this.isMobile);
      }
    });
  }
  
  /**
   * 获取当前设备状态
   */
  getCurrentStatus() {
    return {
      isMobile: this.isMobile
    };
  }
}

// 创建单例实例
const deviceDetector = new DeviceDetector();

export default deviceDetector;